<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
        async 和 await 两种语法结合可以让异步代码像同步一样

        async函数
            async函数的返回值为promise对象
            promise对象的结果由 async 函数执行的返回值决定

        await表达式
            await必须写在async函数中
            await右侧的表达式一般为promise对象
            await返回的是promise成功的值
            await的promise失败了,就会抛出异常,需要通过 try...catch 捕获处理
     -->

     <script>
        // async 函数
        async function fn () {
            // 返回一个字符串
            // return '123' //返回成功状态的promise,结果为 123
            // 返回的结果不是一个promise类型的对象, 返回的结果就是 成功的promise对象
            // return
            // throw new Err('出错啦')
            //返回的结果是一个promise对象
            return new Promise((resolve,reject)=>{
                resolve('ok')
                // reject('fail')
            })
        }
        const res = fn()
        // console.log(res)
        //调用then方法
        res.then(value=>{
            // console.log(value)
        },err=>{
            // console.warn(err)
        })



        // await表达式
        // await要放在async函数中
        const p = new Promise((resolve,reject)=>{
            // resolve('ok')
            reject('err')
        })
        async function main () {
            try {
                let res = await p 
                console.log(res)
            } catch(e){
                console.log(e)
            }
            
        }
        main()




     </script>
</body>
</html>